2012/05/25

Recent entries from same category

  1. VimConf 2023 Tiny に参加しました
  2. Vim で Go 言語を書くために行った引越し作業 2020年度版
  3. Vim をモダンな IDE に変える LSP の設定
  4. ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
  5. VimConf 2019 を終えて

quickrun.vim は言うまでもなく、とても便利なプラグインなのですが、C言語もしくはC++を書く人にとって少し使いにく所があります。
quickrun はファイルタイプに従ったコマンド定義に従って編集中のファイルを実行してくれます。C/C++ であれば実行可能なコンパイラでコンパイルし、実行した結果を表示してくれます。
しかし例えば C++ で boost を使う場合、ヘッダオンリーな物であれば問題無いのですが、ライブラリをリンクする必要がある場合には、quickrun では面倒な実行方法を取らざるを得ません。
ユーザからすれば #include <boost/filesystem.hpp>
と書かれていれば、出来れば -lboost_filesystem をリンクして欲しいものです。今日はそれを実現してくれる quickrunex.vim というのを作りました。
上記の様に boost/filesystem.hpp が include されていれば自動で -lboost_filesystem を付与してくれます。
現在対応しているライブラリとしては
  • libuv
  • v8
  • gtk
  • boost/chrono
  • boost/date_time
  • boost/exception
  • boost/filesystem
  • boost/graph
  • boost/iostream
  • boost/locale
  • boost/math
  • boost/python
  • boost/random
  • boost/serialization
  • boost/signals
  • boost/system
  • boost/thread
  • boost/timer
  • boost/wave
  • fltk2
  • fltk3
となります。#include するだけで自動的にライブラリをリンクしてくれます。
mingw32 と msvc にも対応しています。linux でも動くはずです。また mingw の boost であれば libboost_system-mgw46-1_46.dll.a の様に -lboost_system ではリンクしてくれないライブラリもありますが、これも自動で補完してくれます。
ですので、vim を起動してガシガシ書いて、一度も終了せずにアプリケーションを書けてしまいます。
今後、ユーザが拡張して仕組みを増やせる様にしたいと思うと同時に、C/C++ 以外にも使えたらいいなーと思っています。

ただし以下の点に注意しておいて下さい。
quickrunex.vim は quickrun.vim の v0.6.0 ブランチを使っています。master ブランチでは動作しません。

非推奨APIである quickrun#register_hook を使っています。help にも削除される可能性があると書いてありますので、いずれ動かなくなるかもしれません。

まぁ、thinca さんの事なので、おそらく別の方法で hook を登録出来る仕組みを作ってくれると信じていますが。
宜しければどうぞ。
mattn/quickrunex-vim - GitHub

quickrun extension for C/C++

https://github.com/mattn/quickrunex-vim
Posted at by